import axios from 'axios';

// 创建axios实例
const http = axios.create({
  baseURL: 'http://localhost:8080/api',
  timeout: 10000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json'
  }
});

// 请求拦截器
http.interceptors.request.use(
  config => {
    // 从sessionStorage获取token
    const token = sessionStorage.getItem('token');
    if (token) {
      // 添加token到请求头
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  response => {
    // 直接返回响应数据
    return response.data;
  },
  error => {
    let message = '网络错误，请稍后再试';
    if (error.response) {
      // 请求已发出，但服务器响应的状态码不在 2xx 范围内
      const { status } = error.response;
      
      if (status === 401) {
        // 获取错误消息
        if (error.response.data && error.response.data.message) {
          message = error.response.data.message;
          
          // 如果是token过期，清除登录信息
          if (message.includes('Token无效') || message.includes('过期')) {
            // 清除登录信息
            sessionStorage.removeItem('token');
            sessionStorage.removeItem('user');
            
            // 可以选择跳转到登录页面
            // if (window.location.pathname.startsWith('/admin')) {
            //   // 如果是在管理后台，跳转到管理员登录页
            //   window.location.href = '/admin/login';
            // } else {
            //   // 如果是在前台，跳转到用户登录页
            //   window.location.href = '/login';
            // }
          }
          // 如果是用户名密码错误，不做特殊处理，直接返回错误信息
        }
      } else if (status === 403) {
        message = '无权限访问';
      } else if (error.response.data && error.response.data.message) {
        message = error.response.data.message;
      }
      
      return Promise.reject({
        success: false,
        message,
        code: status
      });
    }
    
    return Promise.reject({
      success: false,
      message
    });
  }
);

export default http; 